package com.shenzhenai.module_pattern.demo4;

/**
 * @author huangzehui
 * @date 2025/8/25 13:20 周一
 * @description 26.设计模式-创建型模式-单例设计模式-双重检查方式
 * https://www.bilibili.com/video/BV1Yt4y1B7Cm?spm_id_from=333.788.player.switch&vd_source=e07cc8cc94eb22bd76722071b03cd199&p=26
 */
public class Singleton {


    // 私有构造方法
    private Singleton() {
    }


    // 声明Singleton类型的变量
    private volatile static Singleton instance;

    // 对我提供公共的访问时间
    public static Singleton getInstance() {
        // 第一次判断，如果 instance 的值不为null，不需要抢占锁，直接返回对象
        if (instance == null) {
            synchronized (Singleton.class) {
                // 第二次判断
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }

        return instance;
    }
}
